package server.fassade;

import java.util.List;
import java.util.logging.Logger;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import server.ejb.beans.Bahn;
import server.ejb.beans.Fluggesellschaft;
import server.ejb.beans.Flugzeug;
import server.ejb.beans.Konto;
import server.ejb.beans.Lotse;
import server.ejb.beans.Parkposition;

@Stateless
public class FlughafenController {
	
    @PersistenceContext(unitName = "flughafen_server")
    EntityManager em;
    
    private static final Logger logger = Logger.getLogger(FlughafenController.class.getName());
    
    public void saveFluggesellschaft(Fluggesellschaft fluggesellschaft){
    	em.merge(fluggesellschaft);
    }
    
    public void saveFlugzeug(Flugzeug flugzeug){
    	em.merge(flugzeug);
    }
    
    public Fluggesellschaft findFluggesellschaftById(int id){
    	Fluggesellschaft fluggesellschaft = em.find(Fluggesellschaft.class, id);
    	return fluggesellschaft;
    }
    
    public List<Fluggesellschaft> findFluggesellschaftByName(String name){
    	Query query = em.createNamedQuery("Fluggesellschaft.findByName");
    	query.setParameter("name", name);
    	List<Fluggesellschaft> fluggesellschaften = (List<Fluggesellschaft>) query.getResultList();
    	return fluggesellschaften;
    }
    
    public List<Fluggesellschaft> findFluggesellschaftAll(){
    	Query query = em.createNamedQuery("Fluggesellschaft.findAll");
    	List<Fluggesellschaft> fluggesellschaften = (List<Fluggesellschaft>) query.getResultList();
    	return fluggesellschaften;
    }
    
    public void saveBahn(Bahn bahn){
    	em.merge(bahn);
    }
    
    public List<Bahn> findBahnAll(){
    		Query query = em.createNamedQuery("Bahn.findAll");
    		List<Bahn> bahnen = (List<Bahn>)query.getResultList();
    		return bahnen;
    }
    
    public List<Bahn> findBahnFreie(){
    	Query query = em.createNamedQuery("Bahn.findFreie");
		List<Bahn> bahnen = (List<Bahn>)query.getResultList();
		return bahnen;
    }
    
    public List<Bahn> findBahnByBezeichnung(String bezeichnung){
    	Query query = em.createNamedQuery("Bahn.findByBezeichnung");
    	query.setParameter("bezeichnung", bezeichnung);
    	List <Bahn> bahnen = (List<Bahn>)query.getResultList();
    	return bahnen;
    }
    
    public Bahn findBahnById(int id){
    	Bahn bahn = em.find(Bahn.class, id);
    	return bahn;
    }
    
    public List<Konto> findKontoAll(){
    	Query query = em.createNamedQuery("Konto.findAll");
    	List<Konto> konten = (List<Konto>)query.getResultList();
    	return konten;
    }
    public Konto findKontoById(int id){
    	Konto konto = em.find(Konto.class, id);
    	return konto;
    }
    
    public List<Parkposition> findParkpositionFreie(){
    	Query query = em.createNamedQuery("Parkposition.findFreie");
		List<Parkposition> parkpositionen = (List<Parkposition>)query.getResultList();
		return parkpositionen;
    }
    
    public List<Parkposition> findParkpositionByBezeichnung(String bezeichnung){
    	Query query = em.createNamedQuery("Parkposition.findByBezeichnung");
    	query.setParameter("bezeichnung", bezeichnung);
    	List <Parkposition> parkpositionen =(List<Parkposition>) query.getResultList();
    	return parkpositionen;
    }
    
    public List<Parkposition> findParkpositionAll(){
		Query query = em.createNamedQuery("Parkposition.findAll");
		List<Parkposition> parkpositionen = (List<Parkposition>)query.getResultList();
		return parkpositionen;
    }

    public Parkposition findParkpositionById(int id){
    	Parkposition parkposition = em.find(Parkposition.class, id);
    	return parkposition;
    }
    
    public List <Lotse> findLotseByName(String name){
    	Query query = em.createNamedQuery("Lotse.FindByName");
    	query.setParameter("name", name);
    	List<Lotse> lotsen =(List<Lotse>) query.getResultList();
    	return lotsen;
    }

}